Skip to content

fix(vmi): Fix lane-strided f16 VCI lowering - #1471

Open
TelGome wants to merge 3 commits into
hw-native-sys:masterfrom
TelGome:issue_1411
Open

fix(vmi): Fix lane-strided f16 VCI lowering#1471
TelGome wants to merge 3 commits into
hw-native-sys:masterfrom
TelGome:issue_1411

Conversation

@TelGome

@TelGome TelGome commented Sep 6, 2026

Copy link
Copy Markdown
Collaborator

修复 A5 VPTO 下 f16 lane-strided VCI 输出异常

关联 Issue

修复 GitHub Issue #1411 中报告的 f16 + group=1 + nomask 精度问题。

问题描述

在 A5 VPTO 后端中,vci 生成的 f16 向量使用 lane_stride=2 布局,并通过 PK_B32 写回时,vci + vadd 的输出出现逐 lane 偏移。

vci_vadd/f16_g1_nomask 为例:

  • 期望输出:994, 995, 996, 997, ...
  • 修复前输出:995, 997, 999, 1001, ...

修复方案

VMIToVPTO lowering 中为 contiguous、lane-strided 的 iota 增加专用 materialization:

  • 针对窄浮点 carrier,根据 lane stride 调整 VCI ramp;
  • f16 + lane_stride=2 使用 0.5 缩放,抵消 VPTO VCI 的物理 lane 步长;
  • 保留 ASC/DESC 顺序和多 physical chunk 的 offset 处理;
  • 增加对应的 PTO IR lowering 回归测试。

测试结果

PTOAS lowering 测试

test/lit/vmi_new/vmi_to_vpto_iota.pto: PASS

PTODSL simulator 测试

sim/vci_vadd/f16_g1_nomask: PASS

筛选全部 vci 用例时:

Passed: 20
Failed: 2

剩余失败为 vci_vcvt/f32_g1vci_vcvt/f32_g2 的测试 IR 类型检查问题,与本次 f16 VCI lowering 修改无关。

修改文件

  • lib/PTO/Transforms/VMIToVPTO.cpp
  • test/lit/vmi_new/vmi_to_vpto_iota.pto

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant